package com.atguigu.gmall.item.vo;

import com.atguigu.gmall.pms.entity.CategoryEntity;
import com.atguigu.gmall.pms.entity.SkuImagesEntity;
import com.atguigu.gmall.pms.vo.ItemGroupVo;
import com.atguigu.gmall.pms.vo.SaleAttrValueVo;
import com.atguigu.gmall.sms.vo.ItemSaleVo;
import lombok.Data;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

/**
 * 为商品详情页提供远程接口：skuId --> ItemVo
 * 	1.根据skuId查询sku  V
 * 	2.根据三级分类id查询一二三级分类 V
 * 	3.根据品牌id查询品牌  V
 * 	4.根据spuId查询spu  V
 * 	5.根据skuId查询sku的图片列表 V
 * 	6.根据skuId查询sku的营销信息 V
 * 	7.根据skuId查询库存信息 V
 * 	8.根据spuId查询spu下所有sku的销售属性列表 V * Collector.groupingBy()
 * 	9.根据skuId查询当前sku的销售属性   V
 * 	10.根据spuId查询spu下销售属性组合和skuId的映射关系 V  group_concat()  Collector.toMap()
 * 	11.根据spuId查询spu的海报信息 V
 * 	12.根据cid spuId skuId查询分组及组下的规格参数和值 V
 */
@Data
public class ItemVo {
    //面包屑所需字段
    //一二三级分类集合
    private List<CategoryEntity> categories;

    //品牌
    private Long brandId;
    private String brandName;

    //spu
    private Long spuId;
    private String spuName;

    //基本信息
    private Long skuId;
    private String title;
    private String subtitle;
    private BigDecimal price;
    private Integer weight;
    private String defaultImage;
    //图片列表
    private List<SkuImagesEntity> images;

    //营销信息
    private List<ItemSaleVo> sales;

    //是否有货
    private Boolean store = false;

    //销售属性列表 :
    // [{attrId: 3, attrName: 机身颜色, attrValues: ["暗夜黑", "白天白"]},
    // {attrId: 4, attrName: 运行内存, attrValues: ["8G", "12G"]},
    // {attrId: 5, attrName: 机身存储, attrValues: ["128G", "256G"]}]
    private List<SaleAttrValueVo> saleAttrs;

    //当前sku的销售属性 (高亮)   {3: "暗夜黑", 4: "12G", 5: "256G"}
    private Map<Long,String> saleAttr;

    //销售属性组合和skuId的映射关系 : {"暗夜黑,8G,128G": 100, "暗夜黑,12G,256G": 101}
    private String skuJsons;

    // 商品海报
    private List<String> spuImages;

    // 规格参数分组及组下的规格参数及值
    private List<ItemGroupVo> groups;

}
